﻿using System;
using HAVNet.Core;


namespace HAVNet.Intros.AST
{
    public class ASTExprBinaryExpr : ASTExpr
    {
        public ASTExpr  left    { get; set; }
        public string   op      { get; set; }
        public ASTExpr  right   { get; set; }

        public ASTExprBinaryExpr ()
            : this (null, "", null)
        {
            //
        }

        public ASTExprBinaryExpr (ASTExpr left, string op, ASTExpr right)
        {
            this.left   = left;
            this.op     = op;
            this.right  = right;
        }

        public override string ToString ()
        {
            /*  ATENCIÓN:
             *      Puse espacios porque los operadores "is" y "as" se
             *      pueden fundir con el nombre de un identificador
             */

            return
                string.Format (
                    "{0} {1} {2}",
                    Lazy.toStringNN (left , ""),
                    Lazy.toStringNN (op   , ""),
                    Lazy.toStringNN (right, "")
                );
        }
    }
}
